This application generally describes systems and methods for reducing jitter associated with a handheld control device such as a controller for a video game system.
User inputs to computer systems may be supplied in various ways. For example, when the computer system is a video game console, inputs are typically supplied using cross-switches, joysticks, buttons and the like provided on a controller. A cross-switch or ajoystick may be used to control movement of a video game object in various directions and various buttons may be used to control character actions such as jumping, using a weapon and the like.
The controller described in this patent application additionally or alternatively includes an accelerometer arrangement that generates inputs to a video game console or other computer system based on certain movements and/or orientations of the controller. Such a controller can provide a more intuitive user interface in which, for example, movement of a video game object can be controlled by moving the controller in a particular manner. By way of illustration, a player may increase or decrease the altitude of a plane in a video game by tilting the controller up or down. The accelerometer arrangement can be used to provide gaming experiences that cannot be provided easily (if at all) using a controller having cross-switches, joysticks, buttons, etc.
In some instances, it may be desirable that not all movements of the controller result in movement or control of a video game object. For example, a player may desire hold the controller steady so that a video game object moves in a particular manner (i.e., straight). Even though the player may intend to hold the controller steady, the player's hand (or hands) may jitter or move slightly. This jitter or slight movement could cause unintended deviations from the desired movement of the video game object (e.g., a character may exhibit some side-to-side movement instead of only straight-ahead movement).
This patent application describes example systems and methods that can be used to reduce the effects of unwanted jitter or slight movements associated with a hand-held control device such as a video game controller.
Certain example methods and systems described herein use an algorithm that effectively “filters” inputs produced by movement of the control device. One particular example algorithm operates as an adaptive filter with a sliding control that adapts to current movement of the control device. In an example algorithm, the slider is controlled by the difference (“delta”) between the raw input and a moving historical average of some number of previous inputs.
With the sliding control set at a first limit (e.g., 0.0), the algorithm output is equal to the previous output. Setting the sliding control at this limit means that the algorithm output is not responsive to the inputs associated with movement of the control device. Thus, this setting can completely stabilize the algorithm output so that movements of the control device (e.g., small movements) do not, for example, affect a desired movement of a video game object.
With the control set at a second limit (e.g., 1.0), the algorithm output is equal to the raw input associated with movement of the control device. Setting the sliding control at this limit means that the algorithm output is completely responsive to the inputs associated with movement of the control device. Thus, this setting can be used, for example, when it is desired for movement of the control device to change the movement of a video game object (e.g., turn left, turn right).
When the slider control is set between 0.0 and 1.0, the output is a linear combination of the raw input and the previous output.
In practice, when a person holds the control device steady, the accelerometer output signals bounce around an average. The “delta” in this case is very small, so the example algorithm results in very stable output. When a person moves the control device suddenly, the “delta” between the most recent input and the historical moving average is quite large, which results in completely responsive output (by using 100% of the most recent input). When the control device changes from being steady to being moved vigorously, the algorithm weights are ramped accordingly in order to smoothly transition from steady output to responsive output. The result is that the output is always substantially smooth without any noticeable jarring transitions when the algorithm adapts to the current movement of the control device.
The systems and methods described herein are not limited to use with control devices in which movement is detected by accelerometers. By way of example without limitation, these systems and methods can be used with additionally or alternatively with an optical system for determining a direction in which the control device is pointing.